'use strict'

define(['tools', 'jquery'], (tools, $) => {
    return (element, mdlInstance) => {
        // v-model
        let vModel = element.attr('v-model') // template绑定v-model的标识
        if (!tools.isBlank(vModel)) { // 绑定了v-model事件
            $(element).change(() => {
                let val = element.val() // select选中项的value值
                mdlInstance[vModel] = val
            })
        }
        // change事件
        let changeEvent = element.attr('@change') // template绑定change事件的标识
        if (!tools.isBlank(changeEvent)) { // 绑定了change事件
            element.change(() => {
                let val = element.val() // select选中项的value值
                let label = element.find('option:selected').text() // select选中项的label值
                mdlInstance[changeEvent](val, label)
            })
        }
        // click事件
        let clickEvent = element.attr('@click') // template绑定click事件的标识
        if (!tools.isBlank(clickEvent)) { // 绑定了click事件
            element.click(() => {
                mdlInstance[clickEvent]()
            })
        }
        // data和url，节点绑定了data则自动忽视url，如果没有data就寻找url
        let data = element.attr(':data') // 本地全量数据
        let url = element.attr(':url') // 请求全量数据的url
        if (!tools.isBlank(data)) { // 绑定了本地data
            let _data = mdlInstance[data] // 本地全量数据
            let sElement = '' // 节点字符串
            _data.forEach(item => {
                sElement += `<option value='${ item.value }'>${ item.label }</option>`
            })
            element.html(sElement)
        } else if (!tools.isBlank(url)) { // 绑定了接口url
            tools.reqAjax(url, null, function(res) {
                let _data = JSON.parse(res) // option数组
                let sElement = '' // 节点字符串
                _data.forEach(item => {
                    sElement += `<option value='${ item.value }'>${ item.label }</option>`
                })
                element.html(sElement)
            })
        }
    }
})